#!/usr/bin/env node

const proagrn = require('commander')

const inquirer = require('inquirer')

const path = require('path')

const fs = require('fs')

const options = [
    {
        type: 'input',
        message: '文件夹名称',
        name: 'dirName'
    },
    {
        type: 'input',
        message: '文件名称',
        name: 'fileName'
    },
    {
        type: 'list', // 交互类型为单选
        message: '请选择文件类型',
        name: 'fileType',
        // 如果为单选或者多选 或者 模糊搜索的话 参数中必须要有choices
        choices: ['.html', '.js', '.json', '.css']
    }, {
        type: 'input',
        message: '请输入文件内容',
        name: "content"
    },
    {
        type: 'confirm', // 交互类型为 确认框
        message: '是否确认创建',
        name: 'isCreate'
    }
]


// 创建文件夹以及文件 以及文件内容
proagrn.command('createDir') // 创建自定义指令
.description('创建文件夹以及文件 以及文件内容')
.action(() => {
    inquirer.prompt(options).then(res => {
        const { isCreate, dirName, fileName, fileType, content } = res
        if(isCreate) {
            // 创建文件夹
            fs.mkdirSync(dirName)
            // 写文件
            fs.writeFileSync(path.join(dirName, fileName + fileType), content)
        }
    })
})

// 输出版本号
const V = () => {
    // 获取package.josn 文件内容字符串
    let obj = fs.readFileSync(path.join(__dirname, 'package.json')).toString()

    // 将字符串转换为对象
    obj = JSON.parse(obj)

    // 返回版本号
    return obj.version
}

proagrn.version(V())
.parse(process.argv)
